<?php

	try {
	    
		require_once '../../controller/controller.inc.php';
		$usuario->isAuthorizedView(Operacao::MANUTENCAO_PERFIL);
		
	   	$id = ( isset ( $_GET['id']) ) ? $_GET['id'] : null;
	    
	    $objeto = new Perfil( $id );
	    $permissao = new Permissao();
	    $operacao = new Operacao();
	    
	    // Carrega a lista de operações
	    $resultSetOperacoes = pg_fetch_all($operacao->listar());
	    
	    if (isset ($_POST["btnAcao"]))
	    {
	        switch($_POST["btnAcao"])
	        {
	            case "Salvar":
	            	
	            	$objeto = new Perfil( $id );
	            	TUtils::preencherObjeto( $objeto, $_POST );
	                $objeto->salvar();

	                $message = ( $id ) ? 'alteracao' : 'insercao';
	                
	                $id = $objeto->perfilid;
	                
	                $permissao->excluirPorPerfil( $id );
	                
	                $bloco = array();
	                foreach ( $_POST as $key => $value )
	                	if ( strpos ( $key, 'operacao' ) > -1 )
	                		$bloco[] = $value;
	                	
	                $permissao->inserirBloco( $bloco, $id );
	                
	               break;
	            case "Excluir":
	                header( 'Location: pesquisar.php?method=excluir&id=' . $_POST['id']);
	                break;
	        }
	        
	        header( 'Location: cadastrar.php?message=' . $message . '&id=' . $id);
	        
	    }
	    
	    if ( $id ) //Carrega a lista de permissões
		    $permissoes = pg_fetch_all($permissao->listar( array( 'campo' => 'perfilid', 'operador' => '=', 'valor' => $id ) ) );
	    
		$operacoes = array();
	    for ( $i = 0; $i < count($resultSetOperacoes); $i++){
	    	$operacoes[$i] = $resultSetOperacoes[$i];
	    	$operacoes[$i]['grupo'] = ucwords( strtolower( substr( $resultSetOperacoes[$i]['descricao'], 0, strpos( $resultSetOperacoes[$i]['descricao'], '/', 1 ) ) ) );
	    	$operacoes[$i]['nome'] = ucwords( strtolower( substr( $resultSetOperacoes[$i]['descricao'], strpos( $resultSetOperacoes[$i]['descricao'], '/', 1 ) + 1 ) ) );
	    	$operacoes[$i]['permissao'] = FALSE;
	    }
	    
	    // Atribui ao vetor de operações a permissão, caso ela exista
	    if ( isset($permissoes) )
	    	if ( $permissoes != false ) 
	    		foreach( $permissoes as $p )
	    			for( $i=0; $i < count($operacoes); $i++)
	    				if ( $operacoes[$i]['operacaoid'] == $p['operacaoid'] )
	    					$operacoes[$i]['permissao'] = true;
	
	    usort($operacoes, 'compararGrupo');
	    usort($operacoes, 'compararOperacao');
	    					
	} catch(exception $e){
		
		$erro = $e->getMessage();
		
	}
	
	function compararOperacao($a, $b)
	{
	  return strnatcmp($a['descricao'], $b['descricao']);
	}
	
	function compararGrupo($a, $b)
	{
	  return strnatcmp($a['grupo'], $b['grupo']);
	}
?>